package com.yss.reportworld.domain.kettle;


import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yss.common.core.annotation.EasyExcel;
import com.yss.common.core.annotation.ExcelValid;
import com.yss.common.core.utils.easyexecl.IntegerConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 采集作业详情对象 rw_db_etl_job_detail
 *
 * @author yss
 * @date 2023-07-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("rw_db_etl_job_detail")
public class EtlJobDetail extends Model<EtlJobDetail> {
    public static final String SHEET_NAME = "作业明细";
    /**
     * 技术主键
     */
    @ExcelIgnore
    @TableId("ID")
    private String id;

    /**
     * 采集作业ID
     */
    @ExcelIgnore
    @TableField("JOB_ID")
    private String jobId;

    @ExcelProperty("作业名称")
    @ExcelValid(message = "【作业明细】【作业名称】不能为空")
    private String jobName;
    /**
     * ETL节点参数CODE
     */
    @ExcelProperty("节点CODE")
    @TableField("ETL_NODE_PARAM_CODE")
    @ExcelValid(message = "【作业明细】【节点CODE】不能为空")
    private String etlNodeParamCode;

    /**
     * 目标表资源英文名
     */
    @ExcelProperty("目标资源英文名")
    @TableField("TARGET_RES_ENAME")
    @ExcelValid(message = "【作业明细】【目标资源英文名】不能为空")
    private String targetResEname;

    /**
     * 目标数据源CODE
     */
    @ExcelProperty("目标数据源CODE")
    @TableField("TARGET_DS_CODE")
    @ExcelValid(message = "【作业明细】【目标数据源CODE】不能为空")
    private String targetDsCode;

    /**
     * 来源资源英文名;多个逗号分隔
     */
    @ExcelProperty("来源资源英文名")
    @TableField("SOURCE_RES_ENAME")
    private String sourceResEname;

    /**
     * 来源数据源CODE
     */
    @ExcelProperty("来源数据源CODE")
    @TableField("SOURCE_DS_CODE")
    @ExcelValid(message = "【作业明细】【来源数据源CODE】不能为空")
    private String sourceDsCode;

    /**
     * SQL语句
     */
    @ExcelProperty("SQL")
    @TableField("SQL_STATEMENT")
    @ExcelValid(message = "【作业明细】【SQL】不能为空")
    private String sqlStatement;

    /**
     * SQL执行顺序
     */
    @ExcelProperty("顺序号")
    @TableField("ORDER_NUM")
    @ExcelValid(message = "【作业明细】【顺序号】不能为空")
    private Integer orderNum;

    /**
     * SQL类型（删除，查询，更新）
     */
    @ExcelProperty(value = "SQL类型", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "1=查询插入,2=执行脚本,3=Http请求,9=文件执行")
    @TableField("SQL_TYPE")
    @ExcelValid(message = "【作业明细】【SQL类型】不能为空")
    private Integer sqlType;

    /**
     * 备注
     */
    @ExcelProperty("备注")
    @TableField("REMARK")
    private String remark;
    /**
     * SQL参数（JSON）预留
     */
    @ExcelProperty("参数")
    @TableField("SQL_PARAM_JSON")
    private String sqlParamJson;

    /**
     * 状态 1启用 0禁用
     */
    @ExcelProperty(value = "状态", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=无效,1=正常")
    @TableField("STATUS")
    @ExcelValid(message = "【作业明细】【状态】不能为空")
    private Integer status;

    /**
     * 数据库类型
     */
    @ExcelIgnore
    @TableField("RW_DB_DATABASE_TYPE")
    private String rwDbDatabaseType;

    /**
     * 数据编码
     */
    @ExcelIgnore
    @TableField("RW_DB_ID")
    private String rwDbId;

}
